#   Copyright 2021 Google LLC
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.

def clean_text(text: str, abbrevs: dict = None) -> str:
  text = _preprocess_text(text)

  if abbrevs:
    text = _map_abbreviations(text, abbrevs)

  return text


def _preprocess_text(text: str) -> str:
  """ Trim and lowercase

  Args:
    text: The input text to be transformed.

  Returns:
    A cleaned string.
  """
  return text.lower().strip()


def _map_abbreviations(text: str, abbrevs: dict) -> str:
  """Maps the abbreviations using the abbrevs side input."""
  output = []
  space = " "

  for word in text.split(space):
    if word in abbrevs:
      output.append(abbrevs[word])
    else:
      output.append(word)

  return space.join(output)